const CompressionWebpackPlugin = require('compression-webpack-plugin')
const productionGzipExtensions = ["js", "css"];
module.exports = {
  // history 模式需要后台配置 并且publicPath不支持使用相对地址
  publicPath: process.env.NODE_ENV === "production" ? "/" : "/",
  // 输出位置
  outputDir: "dist",
  // save时候启动eslint
  lintOnSave: process.env.NODE_ENV !== "production",
  // 静态资源目录位置
  assetsDir: "assets",
  // 生产环境是否生成 sourceMap 文件
  productionSourceMap: false,
  // 实现开发eslint警告
  devServer: {
    host: "",
    disableHostCheck: true,
    // 自动打开浏览器
    open: true,
    hotOnly: true,
    // 页面显示警告与错误
    overlay: {
      // warnings: true,
      // errors: true
    },
    // 测试服
    proxy: {
      "/api": {
        target: "http://dev.2217admin.tonnn.com/",
        changeOrigin: true,
        pathRewrite: {
          "^/api": "/api"
        }
      },
      "/admin": {
        target: "http://devmob.admin.tonnn.com/",
        changeOrigin: true,
        pathRewrite: {
          "^/admin": "/admin"
        }
      },
    },
  },
  chainWebpack: (config) => {
    if (process.env.NODE_ENV === 'production') {
      if (process.env.npm_config_report) {
        config
          .plugin('webpack-bundle-analyzer')
          .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
          .end();
        config.plugins.delete('prefetch')
      }
    }
  },
  configureWebpack: config => {
    config.externals = {
      vue: "Vue",
      vuex: "Vuex",
      "vue-router": "VueRouter",
      "element-ui": "ELEMENT",
    }

    // 解决缓存

    // 压缩
    if (process.env.NODE_ENV === 'production') {
      config.plugins.push(
        new CompressionWebpackPlugin({
          algorithm: "gzip",
          test: new RegExp("\\.(" + productionGzipExtensions.join("|") + ")$"),
          threshold: 10240,
          minRatio: 0.8
        })
      );
    }
  }
  // configureWebpack: {
  //   externals: {
  //     vue: "Vue",
  //     vuex: "Vuex",
  //     "vue-router": "VueRouter",
  //     "element-ui": "ELEMENT"
  //   },
  //   output: { // 输出重构  打包编译后的 文件名称  【模块名称.版本号.时间戳】
  //     filename: `[name].${process.env.VUE_APP_Version}.${Timestamp}.js`,
  //     chunkFilename: `[name].${process.env.VUE_APP_Version}.${Timestamp}.js`
  //   },
  //   if (isProduction) {
  //     config.plugins.push(
  //       new CompressionWebpackPlugin({
  //         algorithm: "gzip",
  //         test: new RegExp("\\.(" + productionGzipExtensions.join("|") + ")$"),
  //         threshold: 10240,
  //         minRatio: 0.8
  //       })
  //     );
  //   }
  // }
};